#!/bin/bash
# 获取当前日期
date_str=$(date +%Y-%m-%d)

# 记录脚本开始时间
start_time=$(date +%s)
# 日志名
LOG_NAME="$3"_"plot_server_$date_str.log"
echo "$(date '+%Y-%m-%d %H:%M:%S') - start" >> "$LOG_NAME"

dir=$1


file_names=( $(find "$dir" -type f -exec basename {} \;) )

# 定义缓存数组
command_cache=()

# 遍历数组并处理每个文件
for file_name in "${file_names[@]}"
do
    #echo "$file_name"
    YY=${file_name:0:2}
    MM=${file_name:2:2}
    DD=${file_name:4:2}
    #起报时间
    FORTIME=${file_name:6:2}
    timeStr="20$YY$MM$DD"_"$FORTIME""00"

    # 将命令缓存到数组中
    command="python main_plot.py -i \"$1$file_name\" -f config_AKS.ini -t $2 -v $3 -o $4 -time \"$timeStr\" -path /nfs_cpu/share/IT/ZWAK/ZWAK-product/FORCAST/IMAGE"
    command_cache+=("$command")

    # 记录命令和执行时间到日志文件中
    echo "$(date '+%Y-%m-%d %H:%M:%S') - $command" >> "$LOG_NAME"

    # 如果缓存数组中存储了 30 条命令，则一起并发执行，并清空缓存数组
    if [ ${#command_cache[@]} -eq 30 ]
    then
        # 将缓存数组中的命令并发执行
        for command in "${command_cache[@]}"
        do
            eval "$command" &
        done

        # 等待所有后台进程执行完毕
        wait

        # 清空缓存数组
        command_cache=()
    fi
done

# 如果缓存数组中还有命令未被执行，则一起并发执行
if [ ${#command_cache[@]} -gt 0 ]
then
    # 将缓存数组中的命令并发执行
    for command in "${command_cache[@]}"
    do
        eval "$command" &
    done

    # 等待所有后台进程执行完毕
    wait
fi

# 记录脚本结束时间
end_time=$(date +%s)
echo "$(date '+%Y-%m-%d %H:%M:%S') - end" >> "$LOG_NAME"

# 计算脚本执行时间
duration=$((end_time - start_time))
echo "Total duration: $duration seconds" >> "$LOG_NAME"